<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:400,700|Source+Sans+Pro:400,700" rel="stylesheet">
    <link rel="stylesheet" href="node_modules/xterm/dist/xterm.css" />
    <link rel="stylesheet" href="node_modules/nprogress/nprogress.css"/>

    <style>
      body {
	color: white;
	background-color: #191A1A;
	font-family: 'Source Sans Pro', sans-serif;
	font-size: 14pt;
	display: flex;
	align-items: center;
	flex-direction: column;
	margin: 16px;
      }
      #terminal {
	display: inline-block;
	max-width: 100%;
      }
      pre, h2 {
	font-family: 'Source Code Pro';
	font-weight: normal;
      }
      a {
	color: #12c2e9;
	text-decoration: none;
      }
      a:hover, a:active, a:focus {
	text-decoration: underline;
      }
      p {
	max-width: 640px;
      }
    </style>
    <title>go-pry: web</title>
  </head>
  <body>
    <h1>go-pry: web</h1>
    <div id="terminal"></div>

    <a href="https://github.com/d4l3k/go-pry" class="github-corner" aria-label="View source on Github"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>

    <div class="container">
      <h2>hello!<b> </b>👋</h2>
      <p>This is a version of <a href="https://github.com/d4l3k/go-pry">go-pry</a>
      that runs in your browser using WebAssembly! It's missing a few features
      but works pretty well for the most part.</p>

      <p>This sometimes takes quite a while to load in Chrome, but it's almost
      instant in Firefox.</p>

      <p>I'm pretty excited to try using this to demo popular client
      libraries.</p>

      <h2>go-pry import bundles</h2>
      <ul>
	<li><a href="/">just fmt,log,math</a></li>
	<li>
	  <a href="/?file=bundles/stdlib.wasm">full standard library</a>
	  (~37MB, will take longer to load)
	</li>
      </ul>
    </div>

    <p>Created by <a href="https://fn.lc">Tristan Rice</a>.</p>


    <script src="node_modules/nprogress/nprogress.js"></script>
    <script>NProgress.start()</script>
    <script src="node_modules/xterm/dist/xterm.js"></script>
    <script src="wasm_exec.js"></script>
    <script>

      const file = (new URL(document.location)).searchParams.get('file')
      const wasm = fetch(file || "bundles/main.wasm")

      document.fonts.ready.then(() => {
	const term = new Terminal({
	  convertEol: true,
	  rows: 30,
	  cols: 120,
	  fontFamily: 'Source Code Pro'
	});
	window.term = term;
	term.open(document.getElementById('terminal'));

	console.stdlog = console.log.bind(console);
	console.log = function(){
	  term.write(Array.from(arguments).join(' ') + '\n');
	  console.stdlog.apply(console, arguments);
	}

	console.log('Loading...')

	const go = new Go();
	WebAssembly.instantiateStreaming(wasm, go.importObject).then((result) => {
	  NProgress.done()
	  go.run(result.instance);
	});
      })
    </script>

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-52169625-6"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'UA-52169625-6');
    </script>
  </body>
</html>
